$(function () {
    Date.prototype.format = function (format) {
        var o = {
            "M+": this.getMonth() + 1, //month
            "d+": this.getDate(), //day
            "h+": this.getHours(), //hour
            "m+": this.getMinutes(), //minute
            "s+": this.getSeconds(), //second
            "q+": Math.floor((this.getMonth() + 3) / 3), //quarter
            "S": this.getMilliseconds() //millisecond
        }
        if (/(y+)/.test(format)) format = format.replace(RegExp.$1,
            (this.getFullYear() + "").substr(4 - RegExp.$1.length));
        for (var k in o)
            if (new RegExp("(" + k + ")").test(format))
                format = format.replace(RegExp.$1,
                    RegExp.$1.length == 1 ? o[k] :
                    ("00" + o[k]).substr(("" + o[k]).length));
        return format;
    }
    // ----------------------------------------------------------------
    var layer = layui.layer;
    var form = layui.form;
    var laypage = layui.laypage;
    //----------------------------------------------------------------
    // 页面查询参数
    var query = {
        pagenum: 1, //页码值
        pagesize: 5, //每页显示几条数据
        username: '', //姓名
        sno: '', //学号
    }
    //----------------------------------------------------------------
    //渲染分页功能
    function renderPage(total) {
        // console.log(total);
        laypage.render({
            elem: 'pageBox', //分页容器的id
            count: total, //数据总数，从服务端得到
            limit: query.pagesize, //每页显示几条数据
            curr: query.pagenum,
            layout: ["count", "limit", "prev", "page", "next", "skip"],
            limits: [5, 10, 15, 20],
            jump: function (obj, first) {
                // console.log(first);
                query.pagenum = obj.curr;
                query.pagesize = obj.limit;
                // 首行不执行
                if (!first) {
                    initUsersList()
                }
            },

        });
    }
    //----------------------------------------------------------------
    initUsersList();

    //----------------------------------------------------------------
    //表单验证
    form.verify({
        pwd: [/^[\S]{6,12}$/, '密码必须6到12位，且不能出现空格'],
        repwd: function (value) {
            var pwd = $('#form_addUser [name=password]').val();
            // console.log(pwd);
            if (pwd != value) {
                return '两次密码不一致！'
            }
        },
        edit_repwd: function (value) {
            var pwd = $('#form_editUser [name=password]').val();
            // console.log(pwd);
            if (pwd != value) {
                return '两次密码不一致！'
            }
        },
        role: [/S/, "请选择角色"],
        sno: [/^[\S]{9}$/, '学号或工号必须9位，且不能出现空格']
    });
    //----------------------------------------------------------------
    //获取所有用户信息列表
    function initUsersList() {
        var username = $('#form_search [name = username]').val()
        var sno = $('#form_search [name = sno]').val()
        // console.log(username);
        // console.log(sno);
        query.username = username;
        query.sno = sno;
        $.ajax({
            method: 'POST',
            url: '/my/userinfo/users/',
            data: query,
            success: function (res) {
                var htmStr = template('tpl-table', res);
                $('tbody').html(htmStr)
                renderPage(res.total)
            }
        })
    }
    //----------------------------------------------------------------
    //所有用户信息模糊搜索需要的信息
    $('#form_search').on('submit', function (e) {
        e.preventDefault()
        initUsersList()
    })

    //----------------------------------------------------------------
    // 获取宿舍管理员分类列表数据的方法
    function initGetAdmin() {
        $.ajax({
            method: 'GET',
            url: '/my/userinfo/getAdminList/',
            success: function (res) {
                // console.log(res);
                if (res.status !== 0) {
                    return layer.msg('获取宿舍管理员分类数据失败！');
                }
                // 调用模板引擎渲染分类可选项
                var chtmlStr = template('dialog_editUsers', res.data);
                // console.log(chtmlStr);
                $('[name=lab_class_person]').html(chtmlStr);
                // 通过 layui 重新渲染表单区域的UI结构
                form.render();
            }
        });
    }

    // 获取楼栋分类列表数据的方法
    function initHostelList(dorm) {
        $.ajax({
            method: 'GET',
            url: '/my/info/getHostelList/' + dorm,
            success: function (res) {
                // console.log(res);
                if (res.status !== 0) {
                    return layer.msg(res.message);
                }
                // 调用模板引擎渲染分类可选项
                var chtmlStr = template('dialog_editUsers', res.data);
                // console.log(chtmlStr);
                $('[name=hostel]').html(chtmlStr);
                // 通过 layui 重新渲染表单区域的UI结构
                form.render();
            }
        });
    }
    // 获取楼栋分类列表数据的方法
    function getLou(sex) {
        // console.log(sex);
        $.ajax({
            method: 'GET',
            url: '/my/deviceManage/getLou/' + sex,
            success: function (res) {
                if (res.status !== 0) {
                    return layer.msg('获取分类数据失败！');
                }
                // 调用模板引擎渲染分类可选项
                var chtmlStr = template('dialog_editUsers', res.dataCate);
                // console.log(chtmlStr);
                $('[name=lab_address]').html(chtmlStr);
                // 通过 layui 重新渲染表单区域的UI结构
                form.render();
                // var dorm = null; //"明德楼"
                // initHostelList(dorm);
                // console.log(res.dataCate);

            }
        });
    }
    //----------------------------------------------------------------
    //通过代理方式为 btn_editUser 按钮绑定 click 事件
    var editUser_index = null;
    $('tbody').on('click', '.btn_editUser', function () {
        var sex = $(this).attr('data_sex')
        editUser_index = layer.open({
            type: 1,
            area: ['420px', ''],
            title: '学生入住',
            content: $('#dialog_editUsers').html(),
            success: function () {
                getLou(sex)
                var nul = null;
                initHostelList(nul)
                layui.use(['form', 'layer'], function () {
                    form.on('select(floor)', function (data) {
                        var dorm = data.value;
                        var nul = null;
                        if (dorm != null) {
                            initHostelList(dorm)
                        } else {
                            initHostelList(nul)
                        }
                    })
                });
                // form.render();
            }
        })
        var id = $(this).attr('data_id');
        // console.log(id);
        form.val('form_edit', {
            id: id
        });
    })
    //----------------------------------------------------------------
    //通过代理的形式，为 edit_addUser 表单绑定 submit 事件
    $('body').on('submit', '#form_editUser', function (e) {
        e.preventDefault();
        var date_time = new Date().format('yyyy-MM-dd hh:mm');
        // console.log(date_time);
        var data = {
            id: $('#form_editUser [name = id]').val(),
            floor: $('#form_editUser [name = lab_address]').val(),
            hostel: $('#form_editUser [name = hostel]').val(),
            flag: 1,
            start_time: date_time,
        }
        // console.log(data);
        $.ajax({
            method: 'POST',
            url: '/my/info/inHostel',
            data: data,
            success: function (res) {
                // console.log(res);
                if (res.status !== 0) {
                    return layer.msg(res.message)
                }
                layer.msg('成功');
                layer.close(editUser_index);
                initUsersList();
            }
        })
    })
    //----------------------------------------------------------------
    //通过代理方式为 btn_cut 按钮绑定 click 事件
    var cut_index = null;
    $('tbody').on('click', '.btn_cut', function () {
        var sex = $(this).attr('data_sex')
        cut_index = layer.open({
            type: 1,
            area: ['420px', ''],
            title: '学生换宿',
            content: $('#dialog_cut').html(),
            success: function () {
                getLou(sex)
                var nul = null;
                initHostelList(nul)
                layui.use(['form', 'layer'], function () {
                    form.on('select(floor)', function (data) {
                        var dorm = data.value;
                        var nul = null;
                        if (dorm != null) {
                            initHostelList(dorm)
                        } else {
                            initHostelList(nul)
                        }
                    })
                });
            }
        })
        var id = $(this).attr('data_id');
        var data_lou = $(this).attr('data_lou');
        var data_hostel = $(this).attr('data_hostel');
        form.val('form_edit', {
            id: id,
            data_lou: data_lou,
            data_hostel: data_hostel
        });
    })
    //通过代理的形式，为 edit_addUser 表单绑定 submit 事件
    $('body').on('submit', '#form_cut', function (e) {
        e.preventDefault();
        var data = {
            id: $('#form_cut [name = id]').val(),
            floor: $('#form_cut [name = lab_address]').val(),
            hostel: $('#form_cut [name = hostel]').val(),
            data_lou: $('#form_cut [name = data_lou]').val(),
            data_hostel: $('#form_cut [name = data_hostel]').val(),
        }
        // console.log(data);
        $.ajax({
            method: 'POST',
            url: '/my/info/cutHostel',
            data: data,
            success: function (res) {
                // console.log(res);
                if (res.status !== 0) {
                    return layer.msg(res.message)
                }
                layer.msg('成功');
                layer.close(cut_index);
                initUsersList();
            }
        })
    })
    //----------------------------------------------------------------
    //通过代理方式为 btn_checkUser 按钮绑定 click 事件：审核用户权限
    $('tbody').on('click', '.btn_checkUser', function () {
        var id = $(this).attr('data_id');
        var access_name = $(this).attr('data_access_name');
        console.log(id);
        $.ajax({
            method: 'POST',
            url: '/my/userinfo/checkUser',
            data: {
                id: id,
                access_name: access_name,
            },
            success: function (res) {
                // console.log(res);
                if (res.status !== 0) {
                    return layer.msg(res.message)
                }
                layer.msg(res.message);
                initUsersList();
            }
        })
    })

    //----------------------------------------------------------------
    //维修学生床铺
    $('tbody').on('click', '.btn_fixUser', function () {
        var id = $(this).attr('data_id');
        // var access_name = $(this).attr('data_access_name');
        // console.log(id);
        $.ajax({
            method: 'GET',
            url: '/my/info/fix/' + id,
            success: function (res) {
                // console.log(res);
                if (res.status !== 0) {
                    return layer.msg("维修失败！")
                }
                layer.msg("维修成功");
                initUsersList();
            }
        })
    })
    //----------------------------------------------------------------
    //恢复学生床铺
    $('tbody').on('click', '.btn_reFix', function () {
        var id = $(this).attr('data_id');
        // var access_name = $(this).attr('data_access_name');
        // console.log(id);
        $.ajax({
            method: 'GET',
            url: '/my/info/reFix/' + id,
            success: function (res) {
                // console.log(res);
                if (res.status !== 0) {
                    return layer.msg(res.message)
                }
                layer.msg(res.message);
                initUsersList();
            }
        })
    })
    //----------------------------------------------------------------
    //通过代理方式为 btn_deleteUser 按钮绑定 click 事件：学生退宿
    $('tbody').on('click', '.btn_deleteUser', function () {
        var id = $(this).attr('data_id');
        layer.confirm('确定为此学生退宿？', {
            icon: 3,
            title: '提示'
        }, function (deleteUser_index) {
            //do something
            // console.log(id);
            $.ajax({
                method: 'POST',
                url: '/my/userinfo/deleteUser',
                data: {
                    id: id,
                },
                success: function (res) {
                    if (res.status !== 0) {
                        return layer.msg("学生退宿失败")
                    }
                    layer.msg("学生退宿成功");
                    initUsersList();
                    layer.close(deleteUser_index);
                }
            })
        });
    })
})